Skip to content
Snippets Groups Projects

Use `<:` (VMcast) for instances of `exact I` in lang/tactics.v

Merged Janno requested to merge ci/janno/vmcast into master
1 file
+ 9
3
Compare changes
  • Side-by-side
  • Inline
+ 9
3
@@ -172,7 +172,8 @@ Ltac solve_closed :=
@@ -172,7 +172,8 @@ Ltac solve_closed :=
match goal with
match goal with
| |- Closed ?X ?e =>
| |- Closed ?X ?e =>
let e' := W.of_expr e in change (Closed X (W.to_expr e'));
let e' := W.of_expr e in change (Closed X (W.to_expr e'));
apply W.is_closed_correct; vm_compute; exact I
(* apply W.is_closed_correct; vm_compute; exact I *)
 
apply W.is_closed_correct; exact (I <: W.is_closed X e')
end.
end.
Hint Extern 0 (Closed _ _) => solve_closed : typeclass_instances.
Hint Extern 0 (Closed _ _) => solve_closed : typeclass_instances.
@@ -188,7 +189,11 @@ Ltac solve_to_val :=
@@ -188,7 +189,11 @@ Ltac solve_to_val :=
apply W.to_val_Some; simpl; unfold W.to_expr; unlock; reflexivity
apply W.to_val_Some; simpl; unfold W.to_expr; unlock; reflexivity
| |- is_Some (to_val ?e) =>
| |- is_Some (to_val ?e) =>
let e' := W.of_expr e in change (is_Some (to_val (W.to_expr e')));
let e' := W.of_expr e in change (is_Some (to_val (W.to_expr e')));
apply W.to_val_is_Some, (bool_decide_unpack _); vm_compute; exact I
apply W.to_val_is_Some, (bool_decide_unpack _);
 
(* vm_compute; exact I *)
 
match goal with [|-Is_true (@bool_decide ?P ?dec)] =>
 
exact (I <: Is_true (@bool_decide P dec))
 
end
end.
end.
Hint Extern 10 (IntoVal _ _) => solve_to_val : typeclass_instances.
Hint Extern 10 (IntoVal _ _) => solve_to_val : typeclass_instances.
Hint Extern 10 (AsVal _) => solve_to_val : typeclass_instances.
Hint Extern 10 (AsVal _) => solve_to_val : typeclass_instances.
@@ -197,7 +202,8 @@ Ltac solve_atomic :=
@@ -197,7 +202,8 @@ Ltac solve_atomic :=
match goal with
match goal with
| |- Atomic ?s ?e =>
| |- Atomic ?s ?e =>
let e' := W.of_expr e in change (Atomic s (W.to_expr e'));
let e' := W.of_expr e in change (Atomic s (W.to_expr e'));
apply W.is_atomic_correct; vm_compute; exact I
(* apply W.is_atomic_correct; vm_compute; exact I *)
 
apply W.is_atomic_correct; exact (I <: W.is_atomic e')
end.
end.
Hint Extern 0 (Atomic _ _) => solve_atomic : typeclass_instances.
Hint Extern 0 (Atomic _ _) => solve_atomic : typeclass_instances.
Loading