Skip to content

Commit 1ac47ca

Browse files
committed
Future-proof CompilersTestCases
Also add some utility functions to ZRangeProofs This is very minor progress towards avoiding replacing the abstract state of higher order functions with bottom when we can avoid it, in service of #1609.
1 parent d0f0305 commit 1ac47ca

2 files changed

Lines changed: 28 additions & 11 deletions

File tree

src/AbstractInterpretation/ZRangeProofs.v

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,23 @@ Module Compilers.
6464
: ZRange.type.option.is_bounded_by x v = true
6565
-> type.related_hetero (fun t x v => ZRange.type.base.option.is_bounded_by x v = true) x v.
6666
Proof. induction t; cbn in *; intuition congruence. Qed.
67+
68+
Lemma is_bounded_by_impl_eqv_refl t
69+
(x : ZRange.type.option.interp t) (v : type.interp base.interp t)
70+
: ZRange.type.option.is_bounded_by x v = true
71+
-> v == v.
72+
Proof. induction t; cbn; try reflexivity; try congruence. Qed.
73+
74+
Lemma andb_bool_for_each_lhs_of_arrow_is_bounded_by_impl_and_for_each_lhs_of_arrow_eqv_refl t
75+
(x : type.for_each_lhs_of_arrow ZRange.type.option.interp t) (v : type.for_each_lhs_of_arrow (type.interp base.interp) t)
76+
: type.andb_bool_for_each_lhs_of_arrow (@ZRange.type.option.is_bounded_by) x v = true
77+
-> type.and_for_each_lhs_of_arrow (@type.eqv) v v.
78+
Proof.
79+
induction t; cbn; [ reflexivity | ].
80+
rewrite Bool.andb_true_iff.
81+
intros [H0 H1].
82+
split; eauto using is_bounded_by_impl_eqv_refl.
83+
Qed.
6784
End option.
6885
End type.
6986

@@ -244,7 +261,7 @@ Module Compilers.
244261
-- f_equal. assumption.
245262
-- intros v H. apply IH2. assumption.
246263
Qed.
247-
264+
248265
Local Ltac handle_lt_le_t_step_fast :=
249266
first [ match goal with
250267
| [ H : (?a <= ?b)%Z, H' : (?b <= ?a)%Z |- _ ]

src/CompilersTestCases.v

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,34 +63,34 @@ Module testrewrite.
6363
((\ x , expr_let y := ##5 in $$y + ($$y + (#ident.fst @ $$x + #ident.snd @ $$x)))
6464
@ (##1, ##7))%expr).
6565

66-
Redirect "log" Eval cbv in partial.eval_with_bound partial.default_relax_zrange false (@ident.is_comment) false
66+
Redirect "log" Eval cbv in partial.EvalWithBound partial.default_relax_zrange false (@ident.is_comment) false
6767
(RewriteRules.RewriteNBE RewriteRules.default_opts (fun var =>
6868
(\z , ((\ x , expr_let y := ##5 in $$y + ($$z + (#ident.fst @ $$x + #ident.snd @ $$x)))
69-
@ (##1, ##7)))%expr) _)
69+
@ (##1, ##7)))%expr))
7070
(Datatypes.Some r[0~>100]%zrange, Datatypes.tt).
7171
End testrewrite.
7272
Module testpartial.
7373
Import expr.
7474
Import ident.
7575

76-
Redirect "log" Eval compute in partial.eval
77-
(#ident.fst @ (expr_let x := ##10 in ($$x, $$x)))%expr.
76+
Redirect "log" Eval compute in partial.Eval
77+
(fun _ => #ident.fst @ (expr_let x := ##10 in ($$x, $$x)))%expr.
7878

7979
Notation "x + y" := (@expr.Ident base.type ident _ _ (ident.Z_add) @ x @ y)%expr : expr_scope.
8080

81-
Redirect "log" Eval compute in partial.eval
82-
((\ x , expr_let y := ##5 in #ident.fst @ $$x + (#ident.fst @ $$x + ($$y + $$y)))
81+
Redirect "log" Eval compute in partial.Eval
82+
(fun _ => (\ x , expr_let y := ##5 in #ident.fst @ $$x + (#ident.fst @ $$x + ($$y + $$y)))
8383
@ (##1, ##1))%expr.
8484

85-
Redirect "log" Eval compute in partial.eval
86-
((\ x , expr_let y := ##5 in $$y + ($$y + (#ident.fst @ $$x + #ident.snd @ $$x)))
85+
Redirect "log" Eval compute in partial.Eval
86+
(fun _ => (\ x , expr_let y := ##5 in $$y + ($$y + (#ident.fst @ $$x + #ident.snd @ $$x)))
8787
@ (##1, ##7))%expr.
8888

8989

90-
Redirect "log" Eval cbv in partial.eval_with_bound
90+
Redirect "log" Eval cbv in partial.EvalWithBound
9191
partial.default_relax_zrange
9292
false (@ident.is_comment) false
93-
(\z , ((\ x , expr_let y := ##5 in $$y + ($$z + (#ident.fst @ $$x + #ident.snd @ $$x)))
93+
(fun _ => \z , ((\ x , expr_let y := ##5 in $$y + ($$z + (#ident.fst @ $$x + #ident.snd @ $$x)))
9494
@ (##1, ##7)))%expr
9595
(Datatypes.Some r[0~>100]%zrange, Datatypes.tt).
9696
End testpartial.

0 commit comments

Comments
 (0)