Skip to content

Commit bb3dc31

Browse files
committed
finish migration
Signed-off-by: Avi Shinnar <shinnar@us.ibm.com>
1 parent 45ad3a9 commit bb3dc31

12 files changed

Lines changed: 1014 additions & 89 deletions

Makefile.rocq_modules

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ UTILS = BasicUtils \
4848
Vector \
4949
PushNeg \
5050
DVector \
51-
Utils
51+
Utils \
52+
derivlemmas
5253

5354
CERTRL = pmf_monad \
5455
qvalues \

coq/ProbTheory/FunctionsToReal.v

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Section defs.
8181
(fun omega => (rv_X1 omega) + (rv_X2 omega)).
8282

8383
Definition rvsum (Xn : nat -> Ts -> R) (n : nat) :=
84-
(fun omega => sum_n (fun n0 => Xn n0 omega) n).
84+
(fun omega => @sum_n R_AbelianGroup (fun n0 => Xn n0 omega) n).
8585

8686
Definition rvscale (c:R) (rv_X : Ts -> R) :=
8787
fun omega => c * (rv_X omega).
@@ -845,7 +845,7 @@ Section defs.
845845
Qed.
846846

847847
Lemma Rbar_Rabs_lim_sum_le0 (f : nat -> Ts -> R) (x : Ts) :
848-
is_finite (Lim_seq (sum_n (fun n=> Rabs (f n x)))) ->
848+
is_finite (Lim_seq (@sum_n R_AbelianGroup (fun n=> Rabs (f n x)))) ->
849849
Rbar_le
850850
(Rbar_abs (Lim_seq (fun n => (rvsum f) n x)))
851851
(Rbar_abs (Lim_seq (fun n => (rvsum (fun n0 => (rvabs (f n0))) n x)))).
@@ -859,11 +859,11 @@ Section defs.
859859
apply ex_series_Lim_seq in H.
860860
apply ex_series_Lim_seq in H0.
861861
replace (Lim_seq
862-
(fun n : nat => sum_n (fun n0 : nat => f n0 x) n))
862+
(fun n : nat => @sum_n R_AbelianGroup (fun n0 : nat => f n0 x) n))
863863
with (Finite ( Series (fun n : nat => f n x))).
864864
replace (Lim_seq
865865
(fun n : nat =>
866-
sum_n (fun n0 : nat => Rabs (f n0 x)) n))
866+
@sum_n R_AbelianGroup (fun n0 : nat => Rabs (f n0 x)) n))
867867
with (Finite (Series (fun n : nat => Rabs (f n x)))).
868868
simpl.
869869
apply Rge_le.
@@ -875,7 +875,7 @@ Section defs.
875875
Qed.
876876

877877
Lemma Rabs_lim_sum_le0 (f : nat -> Ts -> R) (x : Ts) :
878-
is_finite (Lim_seq (sum_n (fun n=> Rabs (f n x)))) ->
878+
is_finite (Lim_seq (@sum_n R_AbelianGroup (fun n=> Rabs (f n x)))) ->
879879
Rbar_le
880880
(Rbar_abs (Finite (real (Lim_seq (fun n => (rvsum f) n x)))))
881881
(Rbar_abs (Lim_seq (fun n => (rvsum (fun n0 => (rvabs (f n0))) n x)))).
@@ -889,11 +889,11 @@ Section defs.
889889
apply ex_series_Lim_seq in H.
890890
apply ex_series_Lim_seq in H0.
891891
replace (Lim_seq
892-
(fun n : nat => sum_n (fun n0 : nat => f n0 x) n))
892+
(fun n : nat => @sum_n R_AbelianGroup (fun n0 : nat => f n0 x) n))
893893
with (Finite ( Series (fun n : nat => f n x))).
894894
replace (Lim_seq
895895
(fun n : nat =>
896-
sum_n (fun n0 : nat => Rabs (f n0 x)) n))
896+
@sum_n R_AbelianGroup (fun n0 : nat => Rabs (f n0 x)) n))
897897
with (Finite (Series (fun n : nat => Rabs (f n x)))).
898898
simpl.
899899
apply Rge_le.
@@ -915,11 +915,11 @@ Section defs.
915915
- rewrite <- H.
916916
apply Rbar_Rabs_lim_sum_le0.
917917
unfold rvsum, rvabs in H.
918-
replace (Lim_seq (sum_n (fun n : nat => Rabs (f n x))))
918+
replace (Lim_seq (@sum_n R_AbelianGroup (fun n : nat => Rabs (f n x))))
919919
with
920920
(Lim_seq
921921
(fun n : nat =>
922-
sum_n (fun n0 : nat => Rabs (f n0 x)) n)).
922+
@sum_n R_AbelianGroup (fun n0 : nat => Rabs (f n0 x)) n)).
923923
now rewrite H.
924924
apply Lim_seq_ext.
925925
intros; trivial.
@@ -949,11 +949,11 @@ Section defs.
949949
- rewrite <- H.
950950
apply Rabs_lim_sum_le0.
951951
unfold rvsum, rvabs in H.
952-
replace (Lim_seq (sum_n (fun n : nat => Rabs (f n x))))
952+
replace (Lim_seq (@sum_n R_AbelianGroup (fun n : nat => Rabs (f n x))))
953953
with
954954
(Lim_seq
955955
(fun n : nat =>
956-
sum_n (fun n0 : nat => Rabs (f n0 x)) n)).
956+
@sum_n R_AbelianGroup (fun n0 : nat => Rabs (f n0 x)) n)).
957957
now rewrite H.
958958
apply Lim_seq_ext.
959959
intros; trivial.

coq/ProbTheory/Martingale.v

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1724,13 +1724,14 @@ Section martingale.
17241724
unfold rvsum.
17251725
destruct k; simpl.
17261726
- lra.
1727-
- generalize (@Hierarchy.sum_n_plus Hierarchy.R_AbelianMonoid
1727+
- generalize (@Hierarchy.sum_n_plus
1728+
(Hierarchy.AbelianGroup.AbelianMonoid Hierarchy.R_AbelianGroup)
17281729
(fun n0 : nat => H1 (S n0) a * (X (S n0) a + -1 * X n0 a))
17291730
(fun n0 : nat => H2 (S n0) a * (X (S n0) a + -1 * X n0 a))
17301731
k); intros eqq.
17311732
unfold Hierarchy.plus in eqq; simpl in eqq.
17321733
rewrite <- eqq.
1733-
apply (@Hierarchy.sum_n_ext Hierarchy.R_AbelianMonoid); intros.
1734+
apply (@Hierarchy.sum_n_ext (Hierarchy.AbelianGroup.AbelianMonoid Hierarchy.R_AbelianGroup)); intros.
17341735
lra.
17351736
Qed.
17361737

coq/ProbTheory/MartingaleStopped.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Section stopped_process.
7272
- destruct (Nat.min_dec (S n) n0).
7373
+ assert (nle: (S n <= n0)%nat) by lia.
7474
rewrite e.
75-
rewrite (@Hierarchy.sum_n_ext_loc Hierarchy.R_AbelianMonoid _ (fun _ => 0)).
75+
rewrite (@Hierarchy.sum_n_ext_loc (Hierarchy.AbelianGroup.AbelianMonoid Hierarchy.R_AbelianGroup) _ (fun _ => 0)).
7676
* rewrite sum_n_zero.
7777
field_simplify.
7878
match_destr; try lra.
@@ -93,7 +93,7 @@ Section stopped_process.
9393
rewrite eqq in p.
9494
assert (n0 = S n) by lia.
9595
subst.
96-
rewrite (@Hierarchy.sum_n_ext_loc Hierarchy.R_AbelianMonoid _ (fun _ => 0)).
96+
rewrite (@Hierarchy.sum_n_ext_loc (Hierarchy.AbelianGroup.AbelianMonoid Hierarchy.R_AbelianGroup) _ (fun _ => 0)).
9797
-- rewrite sum_n_zero.
9898
lra.
9999
-- intros.
@@ -689,7 +689,7 @@ Section stopped_process.
689689
unfold Hierarchy.plus; simpl.
690690
destruct (Nat.eq_dec n (S n0)).
691691
* subst.
692-
assert (0 <= @Hierarchy.sum_n Hierarchy.R_AbelianMonoid (fun n0 : nat => Rabs (Y n0 x)) n0).
692+
assert (0 <= @Hierarchy.sum_n (Hierarchy.AbelianGroup.AbelianMonoid Hierarchy.R_AbelianGroup) (fun n0 : nat => Rabs (Y n0 x)) n0).
693693
{
694694
apply sum_n_nneg; intros.
695695
apply Rabs_pos.

coq/ProbTheory/RandomVariableFinite.v

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -688,11 +688,11 @@ Section fe.
688688
(Xn : nat -> Ts -> R)
689689
(Xn_pos : forall n, NonnegativeFunction (Xn n))
690690
(is_fin_lim :
691-
forall omega, is_finite (Lim_seq (sum_n (fun n => Xn n omega)))):
692-
NonnegativeFunction (fun omega => Lim_seq (sum_n (fun n => Xn n omega))).
691+
forall omega, is_finite (Lim_seq (@sum_n R_AbelianGroup (fun n => Xn n omega)))):
692+
NonnegativeFunction (fun omega => Lim_seq (@sum_n R_AbelianGroup (fun n => Xn n omega))).
693693
Proof.
694694
unfold NonnegativeFunction in *; intros.
695-
generalize (Lim_seq_pos (sum_n (fun n : nat => Xn n x))).
695+
generalize (Lim_seq_pos (@sum_n R_AbelianGroup (fun n : nat => Xn n x))).
696696
rewrite <- is_fin_lim; simpl.
697697
intros; apply H.
698698
intros.
@@ -726,7 +726,7 @@ Section fe.
726726
(Xn_rv : forall n, RandomVariable dom borel_sa (Xn n))
727727
(isfe : forall n, IsFiniteExpectation (Xn n)) :
728728
forall (n:nat),
729-
sum_n (fun n0 : nat => FiniteExpectation (Xn n0)) n =
729+
@sum_n R_AbelianGroup (fun n0 : nat => FiniteExpectation (Xn n0)) n =
730730
FiniteExpectation (rvsum Xn n).
731731
Proof.
732732
intros.
@@ -883,8 +883,8 @@ Lemma Fatou_FiniteExpectation
883883
apply H.
884884
intros.
885885
unfold rvsum, sum_n.
886-
replace (sum_n_m (fun n1 : nat => Xn n1 x) 0 n0) with
887-
(sum_n_m (fun n1 : nat => Xn n1 x) 0 n0 + 0) by lra.
886+
replace (@sum_n_m R_AbelianGroup (fun n1 : nat => Xn n1 x) 0 n0) with
887+
(@sum_n_m R_AbelianGroup (fun n1 : nat => Xn n1 x) 0 n0 + 0) by lra.
888888
rewrite sum_n_Sm; [|lia].
889889
unfold plus; simpl.
890890
apply Rplus_le_compat_l.

coq/QLearn/Dvoretzky.v

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ Qed.
604604
(sum_n_m (fun n0 : nat => -2 * a n0) (S n0) (n + S n0))).
605605
{
606606
intros.
607-
rewrite <- sum_split; trivial; lia.
607+
rewrite <- (@sum_split R_AbelianGroup); trivial; lia.
608608
}
609609
unfold plus in H13; simpl in H13.
610610
exists (-2*x1 - sum_n_m (fun n0 : nat => -2 * a n0) 0 n0 ).
@@ -994,15 +994,15 @@ Section Derman_Sacks.
994994
- rewrite is_lim_seq_incr_n with (N := N).
995995
apply is_lim_seq_ext with
996996
(u := fun n =>
997-
(sum_n_m (fun j : nat => (delta j - c j) / B j) 0 (n + N)) -
998-
(sum_n_m (fun j : nat => (delta j - c j) / B j) 0 (N-1))).
997+
(@sum_n_m R_AbelianGroup (fun j : nat => (delta j - c j) / B j) 0 (n + N)) -
998+
(@sum_n_m R_AbelianGroup (fun j : nat => (delta j - c j) / B j) 0 (N-1))).
999999
intros.
1000-
rewrite sum_split with (m := (N-1)%nat); try lia.
1000+
rewrite (@sum_split R_AbelianGroup) with (m := (N-1)%nat); try lia.
10011001
unfold plus; simpl; ring_simplify.
10021002
replace (S (N-1))%nat with N by lia; trivial.
10031003
apply is_lim_seq_minus with
10041004
(l1 := m_infty)
1005-
(l2 := sum_n_m (fun j : nat => (delta j - c j) / B j) 0 (N - 1)).
1005+
(l2 := @sum_n_m R_AbelianGroup (fun j : nat => (delta j - c j) / B j) 0 (N - 1)).
10061006
+ now rewrite is_lim_seq_incr_n with (N := N) in H13.
10071007
+ apply is_lim_seq_const.
10081008
+ now unfold is_Rbar_minus, is_Rbar_plus; simpl.
@@ -3776,23 +3776,25 @@ Lemma Dvoretzky_converge_W_alpha_beta_uniform (W w α β: nat -> Ts -> R)
37763776
almostR2 prts Rbar_le
37773777
(ConditionalExpectation prts (filt_sub n) (rvsqr (w n)))
37783778
(const (Rsqr C)))) ->
3779-
almost prts (fun ω : Ts => is_lim_seq (sum_n(fun n : nat => α n ω)) p_infty) ->
3780-
almost prts (fun ω : Ts => is_lim_seq (sum_n (fun n : nat => β n ω)) p_infty) ->
3779+
almost prts (fun ω : Ts => is_lim_seq (@sum_n R_AbelianGroup (fun n : nat => α n ω)) p_infty) ->
3780+
almost prts (fun ω : Ts => is_lim_seq (@sum_n R_AbelianGroup (fun n : nat => β n ω)) p_infty) ->
37813781
almost prts (fun ω => ex_series (fun n => Rsqr (β n ω))) ->
3782-
(exists epsilon : posreal, eventually (fun n => almostR2 prts Rbar_lt (fun ω => Lim_seq (sum_n (fun nn => rvsqr (β (nn+n)%nat) ω))) (const epsilon))) ->
3782+
(exists epsilon : posreal, eventually (fun n => almostR2 prts Rbar_lt (fun ω => Lim_seq (@sum_n R_AbelianGroup (fun nn => rvsqr (β (nn+n)%nat) ω))) (const epsilon))) ->
37833783
(forall n, rv_eq (W (S n)) (rvplus (rvmult (rvminus (const 1) (α n)) (W n)) (rvmult (w n) (β n)))) ->
37843784
almost _ (fun ω => is_lim_seq (fun n => W n ω) (Finite 0)).
37853785
Proof.
37863786
intros condexpw condexpw2 alpha_inf beta_inf beta_sqr [ϵ beta_bounded] (* W0 *) Wrel.
3787-
37883787
assert (svy1b: forall n : nat, IsFiniteExpectation prts (rvsqr (β n))).
37893788
{
37903789
intros.
37913790
now apply isfe_sqr_X_almost_01.
37923791
}
37933792

37943793
eapply (@Dvoretzky_converge_W_alpha_beta_isf_seq_sum W w α β F isfilt filt_sub adaptZ adapt_alpha adapt_beta rvw); eauto.
3795-
3794+
change (is_finite
3795+
(Lim_seq
3796+
(@sum_n R_AbelianGroup
3797+
(fun n : nat => @FiniteExpectation Ts dom prts (@rvsqr Ts (β n)) (svy1b n))))).
37963798
generalize (sum_expectation prts (fun n => rvsqr (β n))); intros HH.
37973799
assert (rv2 : forall n, RandomVariable dom borel_sa (rvsqr (β n))).
37983800
{
@@ -3812,7 +3814,7 @@ Proof.
38123814
unfold A3'.
38133815
unfold Series.
38143816
apply Rbar_real_rv.
3815-
cut (RandomVariable dom Rbar_borel_sa (fun omega : Ts => ELim_seq (sum_n (fun n : nat => (β n omega)²)))).
3817+
cut (RandomVariable dom Rbar_borel_sa (fun omega : Ts => ELim_seq (@sum_n R_AbelianGroup (fun n : nat => (β n omega)²)))).
38163818
{
38173819
apply RandomVariable_proper; try reflexivity; intros ?.
38183820
now rewrite <- Elim_seq_fin.
@@ -3878,7 +3880,7 @@ Proof.
38783880
specialize (betaN (S N)).
38793881
cut_to betaN; try lia.
38803882

3881-
pose (btail := (rvplus (fun ω => sum_n (fun nn : nat => rvsqr (β nn) ω) N)
3883+
pose (btail := (rvplus (fun ω => @sum_n R_AbelianGroup (fun nn : nat => rvsqr (β nn) ω) N)
38823884
(const (pos ϵ)))).
38833885

38843886
assert (btail_rv : RandomVariable dom Rbar_borel_sa btail).
@@ -3892,7 +3894,7 @@ Proof.
38923894
apply IsFiniteExpectation_Rbar.
38933895
apply Rbar_finexp_finexp.
38943896
{
3895-
cut (RandomVariable dom Rbar_borel_sa (fun omega : Ts => ELim_seq (sum_n (fun n : nat => (β n omega)²)))).
3897+
cut (RandomVariable dom Rbar_borel_sa (fun omega : Ts => ELim_seq (@sum_n R_AbelianGroup (fun n : nat => (β n omega)²)))).
38963898
{
38973899
apply RandomVariable_proper; try reflexivity; intros ?.
38983900
now rewrite <- Elim_seq_fin.
@@ -3901,7 +3903,7 @@ Proof.
39013903
}
39023904
apply (Rbar_IsFiniteExpectation_nnf_bounded_almost _ _ btail).
39033905
- intros ?.
3904-
generalize (Lim_seq_le (fun _ => 0) (sum_n (fun n : nat => (β n x)²)))
3906+
generalize (Lim_seq_le (fun _ => 0) (@sum_n R_AbelianGroup (fun n : nat => (β n x)²)))
39053907
; intros HHH.
39063908
cut_to HHH.
39073909
+ rewrite Lim_seq_const in HHH.
@@ -3916,13 +3918,13 @@ Proof.
39163918
apply almost_impl.
39173919
apply all_almost; intros ω bsqr_ex bsqr_bound.
39183920
rewrite <- (Lim_seq_incr_n _ (S N)).
3919-
assert (eqq:Lim_seq (fun n : nat => sum_n (fun n0 : nat => (β n0 ω)²) (n + S N)) =
3921+
assert (eqq:Lim_seq (fun n : nat => @sum_n R_AbelianGroup (fun n0 : nat => (β n0 ω)²) (n + S N)) =
39203922

3921-
(Lim_seq (fun n => sum_n (fun nn : nat => rvsqr (β nn) ω) N +
3922-
(sum_n (fun nn : nat => rvsqr (β (nn + S N)%nat) ω) n)))).
3923+
(Lim_seq (fun n => @sum_n R_AbelianGroup (fun nn : nat => rvsqr (β nn) ω) N +
3924+
(@sum_n R_AbelianGroup (fun nn : nat => rvsqr (β (nn + S N)%nat) ω) n)))).
39233925
{
39243926
apply Lim_seq_ext; intros n.
3925-
generalize (sum_split (fun n0 : nat => (β n0 ω)²) 0 ((n + S N)%nat) N)
3927+
generalize (@sum_split R_AbelianGroup (fun n0 : nat => (β n0 ω)²) 0 ((n + S N)%nat) N)
39263928
; intros HHH.
39273929
cut_to HHH; try lia.
39283930
unfold sum_n.
@@ -3931,12 +3933,19 @@ Proof.
39313933
f_equal.
39323934
now rewrite sum_shift.
39333935
}
3936+
change ( Rbar_le (Lim_seq (fun n : nat => @sum_n R_AbelianGroup (fun n0 : nat => (β n0 ω)²) (n + S N)))
3937+
(rvplus (fun ω0 : Ts => @sum_n R_AbelianGroup (fun nn : nat => rvsqr (β nn) ω0) N) (const ϵ) ω)).
39343938
rewrite eqq.
39353939
rewrite Lim_seq_plus.
39363940
+ unfold rvplus.
39373941
rewrite Lim_seq_const.
3938-
replace (Finite (sum_n (fun nn : nat => rvsqr (β nn) ω) N + const (pos ϵ) ω)) with
3939-
(Rbar_plus (sum_n (fun nn : nat => rvsqr (β nn) ω) N) (const (pos ϵ) ω)) by reflexivity.
3942+
replace (Finite
3943+
(Rplus
3944+
(@sum_n (AbelianGroup.AbelianMonoid R_AbelianGroup)
3945+
(fun nn : nat => @rvsqr Ts (β nn) ω) N)
3946+
(pos (@const posreal Ts ϵ ω))))
3947+
with
3948+
(Rbar_plus (@sum_n R_AbelianGroup (fun nn : nat => rvsqr (β nn) ω) N) (const (pos ϵ) ω)) by reflexivity.
39403949
apply Rbar_plus_le_compat.
39413950
{ apply Rbar_le_refl. }
39423951
now apply Rbar_lt_le.
@@ -4139,16 +4148,18 @@ Proof.
41394148
+ destruct n; [lia |].
41404149
rewrite <- (Lim_seq_incr_n (sum_n (fun n0 : nat => rvsqr (β n0) ω)) (S n)).
41414150
apply Lim_seq_le; intros.
4142-
generalize (sum_split (fun n0 : nat => (β n0 ω)²) 0 ((n0 + S n)%nat) n)
4151+
generalize (@sum_split R_AbelianGroup (fun n0 : nat => (β n0 ω)²) 0 ((n0 + S n)%nat) n)
41434152
; intros HHH.
4144-
cut_to HHH; try lia.
4145-
unfold sum_n, rvsqr.
4146-
rewrite HHH.
4147-
unfold plus, rvsqr; simpl.
4148-
rewrite sum_shift.
4149-
cut (0 <= sum_n_m (fun n1 : nat => (β n1 ω)²) 0 n); try lra.
4150-
apply sum_n_m_pos; intros.
4151-
apply Rle_0_sqr.
4153+
cut_to HHH; try lia.
4154+
unfold sum_n, rvsqr.
4155+
etransitivity; [| right; symmetry; apply HHH].
4156+
unfold plus, rvsqr; simpl.
4157+
rewrite sum_shift.
4158+
change (@sum_n_m R_AbelianGroup (fun nn : nat => (β (nn + S n)%nat ω)²) 0 n0 <=
4159+
@sum_n_m R_AbelianGroup (fun n1 : nat => (β n1 ω)²) 0 n + @sum_n_m R_AbelianGroup (fun n1 : nat => (β (n1 + S n)%nat ω)²) 0 n0).
4160+
cut (0 <= @sum_n_m R_AbelianGroup (fun n1 : nat => (β n1 ω)²) 0 n); try lra.
4161+
apply sum_n_m_pos; intros.
4162+
apply Rle_0_sqr.
41524163
+ simpl.
41534164
apply Rmax_r.
41544165
Qed.

coq/QLearn/jaakkola_vector.v

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3030,16 +3030,16 @@ Section jaakola_vector2.
30303030
repeat rewrite vector_map_create.
30313031
repeat rewrite vector_nth_create.
30323032
repeat rewrite vector_nth_map.
3033-
assert (pf3 : (i < (S N))%nat).
3033+
assert (pf3 : (0 + i < 0 + (S N))%nat).
30343034
{
30353035
lia.
30363036
}
30373037
simpl.
30383038
repeat match goal with
3039-
[|- context [@vector_nth ?RR ?nn i (plus_lt_compat_l ?pi ?pn ?pc ?pp) ?v]] =>
3040-
replace (@vector_nth RR nn i (plus_lt_compat_l pi pn pc pp) v)
3041-
with (@vector_nth RR nn i pf3 v)
3042-
by apply vector_nth_ext
3039+
[|- context [@vector_nth R (S N) i (@proj1 ?h1 ?h2 (Nat.add_lt_mono_l ?pi ?pn ?pc) ?pp) ?v]] =>
3040+
replace (@vector_nth R (S N) i (@proj1 h1 h2 (Nat.add_lt_mono_l pi pn pc) pp) v)
3041+
with (@vector_nth R (S N) i pf3 v)
3042+
by now apply vector_nth_ext
30433043
end.
30443044
lra.
30453045
}

0 commit comments

Comments
 (0)