source: src/LTL/LTL.ma

Last change on this file was 3263, checked in by tranquil, 7 years ago

moved callee saved saving and restoring to ERTL -> LTL pass (untrusted
colourer and interference graph creator still need to be updated)
joint now has the stack size split in three (referenced locals, params
and spilled)

File size: 2.1 KB
Line 
1include "LIN/joint_LTL_LIN.ma".
2
3definition LTL ≝ mk_graph_params LTL_LIN.
4
5(* aid unification *)
6unification hint 0 ≔
7(*---------------*) ⊢
8acc_a_reg LTL ≡ unit.
9unification hint 0 ≔
10(*---------------*) ⊢
11acc_a_arg LTL ≡ unit.
12unification hint 0 ≔
13(*---------------*) ⊢
14acc_b_reg LTL ≡ unit.
15unification hint 0 ≔
16(*---------------*) ⊢
17acc_a_arg LTL ≡ unit.
18unification hint 0 ≔
19(*---------------*) ⊢
20snd_arg LTL ≡ hdw_argument.
21unification hint 0 ≔
22(*---------------*) ⊢
23ext_seq LTL ≡ ltl_lin_seq.
24unification hint 0 ≔
25(*---------------*) ⊢
26pair_move LTL ≡ registers_move.
27
28definition ltl_program ≝ joint_program LTL.
29unification hint 0 ≔ ⊢ ltl_program ≡ joint_program LTL.
30
31coercion byte_to_ltl_argument : ∀b: Byte.snd_arg LTL ≝
32  hdw_argument_from_byte on _b : Byte to snd_arg LTL.
33coercion reg_to_ltl_argument : ∀r: Register.snd_arg LTL ≝
34  hdw_argument_from_reg on _r : Register to snd_arg LTL.
35
36definition LTL_premain : ∀p : ltl_program.
37  joint_closed_internal_function LTL (prog_names … p) ≝
38λp.
39let l1 : label ≝ an_identifier … one in
40let l2 : label ≝ an_identifier … (p0 one) in
41let l3 : label ≝ an_identifier … (p1 one) in
42let res ≝
43  mk_joint_internal_function LTL (prog_names … p)
44  (mk_universe … (p0 (p0 one)))
45  (mk_universe … one)
46  it it 0 0 0 (empty_map …) l1 in
47(* todo: args for main? *)
48let res ≝ add_graph … l1
49  (sequential … (COST_LABEL … (init_cost_label … p)) l2)
50  res in
51let res ≝ add_graph … l2
52  (sequential … (CALL LTL ? (inl … (prog_main … p)) 0 it) l3)
53  res in
54let res ≝ add_graph … l3
55  (GOTO ? l3)
56  res in
57res.
58%
59[ ** [2,3: * [2,3,5,6: #p ]] #s whd in ⊢ (??%?→?); #EQ destruct
60  %
61  [1,3,5: %{I} % whd in ⊢ (??%(??%)→?); #EQ destruct
62  |2: %
63  |4,6: % whd in ⊢ (??%%→?); #EQ destruct
64  ]
65| ** [2,3: * [2,3,5,6: #p ]] #s whd in ⊢ (??%?→?); #EQ destruct % try @I %{I I}
66| ** [2,3: * [2,3,5,6: #p ]] * whd whd in ⊢ (?%%); //
67| ** [2,3: * [2,3,5,6: #p ]] #s whd in ⊢ (??%%→?); #EQ destruct @I
68| %{l2} %{(init_cost_label … p)} %
69]
70qed.
Note: See TracBrowser for help on using the repository browser.