Skip to content

Instantly share code, notes, and snippets.

@lin
Last active May 29, 2019 02:47
Show Gist options
  • Save lin/ac999bde863dd37054cd7519ae620eca to your computer and use it in GitHub Desktop.
Save lin/ac999bde863dd37054cd7519ae620eca to your computer and use it in GitHub Desktop.
Elements of Abstraction

Elements of Abstraction

1. Definition of Abstration

if (A.checker(a) == true)
  console.log(a.in(A)) // true
// A.checker(a) == true => a \in A

2. Equivalence of Abstration

if( cares(A).is_equal(cares(B)) )
  console.log(A == B) // true
// cares(A).is_equal(cares(B)) => A == B

3. Hierarchy of Abstration (Feature Extraction)

if( cares(B).is_a_subset_of(cares(A)) )
   console.log(B.is_a_subclass_of(A)) // true
// cares(B).is_a_subset_of(cares(A)) => B \subseteq A

4. Computation of Abstraction

let A = a.strip_one_layer_of_care()
let f = (x: A) => transform(x)
let t = f.compute_without_detail_reduction(symbolize(a))
if (t.is_a_terminal_symbol()){
  console.log(f(A)) // t
  console.log(f(a)) // t
} else {
  let B = new_class(t)
  console.log(B) // A
}

5. Concretization

if (f(A) == t && a.in(A))
   console.log(f(a)) // t
// f(A) -> t; a\in A; => f(a) -> t
if (f(A) == t && B.is_a_subclass_of(A))
   console.log(f(B)) // t
// f(A) -> t; B \subseteq A; => f(B) -> t

6. Equivalence of Computation

if ( g.arguments_types == f.arguments_types == A && f(A) == g(A))
   console.log(f == g) // true
   console.log(f.equivalent_forms) // [g]
// g.arguments_types == f.arguments_types == A; f(A) == g(A); => f == g
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment