Theory Shallow_Micro_Rust.Tuple
theory Tuple
imports
Core_Expression
begin
datatype tnil = TNil
abbreviation(input) tuple_base_pair :: ‹('s, 'arg0, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg1, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg0 × 'arg1 × tnil, 'c, 'abort, 'i, 'o) expression› where
‹tuple_base_pair ≡ bindlift2 (λx y. (x, y, TNil))›
abbreviation(input) tuple_cons :: ‹('s, 'arg0, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg1, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg0 × 'arg1, 'c, 'abort, 'i, 'o) expression› where
‹tuple_cons ≡ bindlift2 (λx y. (x, y))›
abbreviation(input) tuple_index_0 :: ‹('s, 'arg0 × 'arg1, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg0, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_0 ≡ bindlift1 fst›
abbreviation(input) tuple_index_1 :: ‹('s, 'arg0 × 'arg1 × 'arg2, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg1, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_1 ≡ bindlift1 (fst ∘ snd)›
abbreviation(input) tuple_index_2 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg2, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_2 ≡ bindlift1 (fst ∘ snd ∘ snd)›
abbreviation(input) tuple_index_3 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg3, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_3 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_4 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg4, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_4 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_5 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg5, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_5 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_6 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg6, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_6 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_7 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg7, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_7 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_8 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg8, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_8 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_9 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9 × 'arg10, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg9, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_9 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_10 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9 × 'arg10 × 'arg11, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg10, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_10 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_11 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9 × 'arg10 × 'arg11 × 'arg12, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg11, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_11 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_12 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9 × 'arg10 × 'arg11 × 'arg12 × 'arg13, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg12, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_12 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_13 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9 × 'arg10 × 'arg11 × 'arg12 × 'arg13 × 'arg14, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg13, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_13 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_14 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9 × 'arg10 × 'arg11 × 'arg12 × 'arg13 × 'arg14 × 'arg15, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg14, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_14 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
abbreviation(input) tuple_index_15 :: ‹('s, 'arg0 × 'arg1 × 'arg2 × 'arg3 × 'arg4 × 'arg5 × 'arg6 × 'arg7 × 'arg8 × 'arg9 × 'arg10 × 'arg11 × 'arg12 × 'arg13 × 'arg14 × 'arg15 × 'arg16, 'c, 'abort, 'i, 'o) expression ⇒
('s, 'arg15, 'c, 'abort, 'i, 'o) expression› where
‹tuple_index_15 ≡ bindlift1 (fst ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd ∘ snd)›
end