- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
Definition uilv_add_trivial {N} te (t : list TE) (traces : Traces N)
i j (Ht : MInt_ trace_elems_don't_commute j true traces t)
s s' (Hls : LongStep s (te :: t) s')
(Htriv : trivial_add i j traces) :
MInt_ trace_elems_don't_commute i true (push_te traces i te) (te :: t).
Proof with autorewrite with vector; eauto with vector; try vec_forall_eq_contradiction.
unfold push_te.
unfold trivial_add in Htriv.
destruct (Fin.eq_dec i j) as [Hij|Hij].
(* [i=j], solving by constructor: *)
{ subst.
unfold trivial_add.
eapply mint_keep with (rest := traces[@j])...
}
remember traces[@j] as t2_.
destruct t2_ as [|te2 t2]; subst.
{ inversion Ht as [vec Hvec|? ? ? ? ? Hj Hcont|? ? ? ? ? ? Hjj0 Hswitch Hj Hcont];
subst.
- eapply mint_keep with (prog := true)...
eapply mint_nil...
- rewrite Hj in Heqt2_.
discriminate.
}
remember traces[@i] as t1_.
destruct t1_ as [|te1 t1]; subst.
(* [te] is the last element in i-th trace: *)
{ eapply mint_keep with (rest := []) (prog := false)...
inversion Ht as [vec Hvec|? ? ? ? ? Hj Hcont|? ? ? ? ? ? Hjj0 Hswitch Hj Hcont];
subst...
rewrite Heqt1_ in *.
eapply mint_switch...
rewrite <-Heqt1_...
}
destruct Htriv as [|[Hij' Hcomm]]; [contradiction Hij|idtac].
eapply mint_keep with (rest := te1 :: t1) (prog := false)...
rewrite Heqt1_, Vec.replace_id.
inversion Ht as [vec Hvec|? ? ? ? ? Hj Hcont|? ? ? ? ? ? Hjj0 Hswitch Hj Hcont]; subst...
replace te0 with te2 in * by congruence.
eapply mint_switch...
rewrite <-Heqt1_...
Defined.
Кто сказал, что хуже C++ темплейтов ничего уже нет? Вы ничего не понимаете в метушне. Это говно разворачивается в 12000 строк, например.
CHayT 20.08.2020 00:20 # 0
Desktop 20.08.2020 00:24 # 0
{ Вы случайно не middle клингон? }
CHayT 20.08.2020 00:26 # 0
defecate-plusplus 20.08.2020 01:33 # +4
XYPO3BO3 20.08.2020 01:47 # 0
bootcamp_dropout 20.08.2020 00:28 # 0
это оно?
CHayT 20.08.2020 00:32 # 0
bootcamp_dropout 20.08.2020 00:42 # 0
CHayT 20.08.2020 00:54 # 0
bootcamp_dropout 20.08.2020 01:10 # 0
CHayT 20.08.2020 01:17 # 0
bootcamp_dropout 20.08.2020 01:33 # 0
CHayT 20.08.2020 01:41 # 0
bootcamp_dropout 20.08.2020 01:53 # 0
CHayT 20.08.2020 02:02 # 0
bootcamp_dropout 20.08.2020 11:17 # 0
j123123 22.08.2020 18:54 # 0
CHayT 22.08.2020 21:55 # 0
gost 22.08.2020 22:00 # 0
Stallman 22.08.2020 22:04 # 0
CHayT 22.08.2020 22:08 # +1
gostinho 22.08.2020 22:09 # 0
gost 22.08.2020 22:11 # 0
Stallman 23.08.2020 17:46 # 0
Desktop 23.08.2020 17:49 # 0
bormand 23.08.2020 18:29 # 0
Desktop 23.08.2020 18:30 # 0
gost 23.08.2020 18:31 # +2
https://www.youtube.com/watch?v=3Szc_pOz9fw
gostinho 20.08.2020 09:30 # 0
XYPO3BO3 20.08.2020 12:39 # 0
bormand 20.08.2020 12:42 # 0
В общем-то даже языки с формальными пруфами не гарантируют "правильности" кода, т.к. они проверяют только какой-то набор свойств, которые ты посчитал важными.
j123123 20.08.2020 23:36 # 0
XYPO3BO3 20.08.2020 23:41 # 0
gostinho 20.08.2020 23:50 # 0
XYPO3BO3 20.08.2020 23:59 # 0
3_dar 21.08.2020 09:00 # 0
TOPT 21.08.2020 09:31 # 0
6a6yuH 20.08.2020 18:36 # 0
Впрочем, шансы на корректность у них выше, чем у скриптоговна.
Скриптоговно не факт, что работает верно. Даже если запустилось
gostinho 20.08.2020 19:10 # 0
6a6yuH 20.08.2020 19:23 # 0
gostinho 20.08.2020 19:24 # 0
XYPO3BO3 21.08.2020 00:00 # 0
gostinho 21.08.2020 08:59 # 0
XYPO3BO3 21.08.2020 09:33 # 0
TOPT 21.08.2020 09:35 # 0
gostinho 21.08.2020 11:43 # 0
gost 21.08.2020 12:19 # 0
OCETuHCKuu_nemyx 21.08.2020 14:42 # 0
gost 20.08.2020 07:04 # 0
???????
Доброе утро.
TOPT 20.08.2020 07:26 # 0
gostinho 20.08.2020 09:23 # 0
gostinho 20.08.2020 09:24 # 0