Library EVMOpSem.Lem.lem_function


Require Import Arith.
Require Import Bool.
Require Import List.
Require Import String.
Require Import Program.Wf.

Require Import coqharness.

Open Scope nat_scope.
Open Scope string_scope.


Require Import lem_bool.
Require Export lem_bool.
Require Import lem_basic_classes.
Require Export lem_basic_classes.

Require Import Program.Basics.
Require Export Program.Basics.






Definition rev_apply {a b : Type} (x : a) (f : a -> b) : b:= f x.


Definition curry {a b c : Type} (f : (a*b) % type -> c) : a -> b -> c:= (fun (a1 : a) (b1 : b) => f (a1, b1)).

Definition uncurry {a b c : Type} (f : a -> b -> c) (p : (a*b) % type) : c:=
  match ( (f,p)) with ( f, (a1, b1)) => f a1 b1 end.