let rec cmdsemantic (c: cmd) (dect: dec_table) proct = match c with
          Ass(l,r)      ->  (checkLexp l dect proct) = (checkAexp r dect proct)
        | Blk(cl)       ->  (
                             match cl with
                                []      ->  true
                              | x::xs   ->  (cmdsemantic x dect proct) & (cmdsemantic (Blk(xs)) dect proct)
                            )
        | Ite(b,c1,c2)  ->  ((checkBool b dect proct) = DBool& (cmdsemantic c1 dect proct) & (cmdsemantic c2 dect proct)
        | While(b,c)    ->  ((checkBool b dect proct) = DBool& (cmdsemantic c dect proct)
        | Repeat(c,b)   ->  ((checkBool b dect proct) = DBool& (cmdsemantic c dect proct)
        | For(i,s,f,c)  ->  let it = (checkAexp (Var(i)) dect proct) in
                            (it = (checkAexp s dect proct)) & 
                            (it = (checkAexp f dect proct)) & 
                            (it = DInt&
                            (cmdsemantic c dect proct)
        | Write(e)      ->  true
        | PCall(i,pl)   ->  (
                             let pten = (Hashtbl.find proct i) in match pten with
                                Building(t, plist)              ->  (
                                                                     if (checkParTypes (List.rev plist) (List.rev pl) dect proct)
                                                                     then true
                                                                     else raise (SEMANTIC_ERROR "Different Parameters Types")
                                                                    )
                              | Subroutine(t,plist,ldtable,_)   ->  (
                                                                     if (checkParTypes (List.rev plist) (List.rev pl) dect proct)
                                                                     then true
                                                                     else raise (SEMANTIC_ERROR "Different Parameters Types")
                                                                    )
                            )