Commit 42a8dc3a authored by Janno's avatar Janno

Try `<:` (VMcast) for instances of `exact I`.

parent 9843e3f0
Pipeline #7110 passed with stage
in 21 minutes and 49 seconds
......@@ -172,7 +172,8 @@ Ltac solve_closed :=
match goal with
| |- Closed ?X ?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.
Hint Extern 0 (Closed _ _) => solve_closed : typeclass_instances.
......@@ -188,7 +189,11 @@ Ltac solve_to_val :=
apply W.to_val_Some; simpl; unfold W.to_expr; unlock; reflexivity
| |- is_Some (to_val ?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.
Hint Extern 10 (IntoVal _ _) => solve_to_val : typeclass_instances.
Hint Extern 10 (AsVal _) => solve_to_val : typeclass_instances.
......@@ -197,7 +202,8 @@ Ltac solve_atomic :=
match goal with
| |- Atomic ?s ?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.
Hint Extern 0 (Atomic _ _) => solve_atomic : typeclass_instances.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment