Lectures on Proof-Carrying Code
Peter Lee

public class Bcopy {
  public static void bcopy( int [] src,
			    int[] dst )
  {
    int l = src.length;
    int i = 0;

    for( i=0; i < 1; i++) {
      dst[i] = src[i]; 
    }
  }  
}

}

Proof Rules
1. Standard syntax and rules for first-order logic
    - syntax of predicates
    - type of valid proofs, indexed by predicates
    - inference rules
2. Syntax and rules for arimetic and equality
3. Syntax and rules for the Java type system
4. Rules describing the layout of data structures.
5. Quick hacks.

Improvements
  
Foundational Certified Code
  We trust only
  - Security policy
  - Proof system / Proof checker
  -

  We can eliminate VCGen by using a global invariant on states
  Inv(S)

  In "Foundational PCC", by Appel and Felty, we trust only the
  safety policy and the proofchecker, not hte VCgen 

