Esempio n. 1
0
void assertion_set::update(unsigned i, expr * f, proof * pr) {
    SASSERT(m().proofs_enabled() == (pr != 0 && !m().is_undef_proof(pr)));
    if (m_inconsistent)
        return;
    if (m().proofs_enabled()) {
        expr_ref out_f(m());
        proof_ref out_pr(m());
        slow_process(true, f, pr, out_f, out_pr);
        if (!m_inconsistent) {
            if (m().is_false(out_f)) {
                push_back(out_f, out_pr);
            }
            else {
                m().set(m_forms, i, out_f);
                m().set(m_proofs, i, out_pr);
            }
        }
    }
    else {
        quick_process(true, f);
        if (!m_inconsistent) {
            if (m().is_false(f))
                push_back(f, 0);
            else
                m().set(m_forms, i, f);
        }
    }
}
Esempio n. 2
0
void goal::update(unsigned i, expr * f, proof * pr, expr_dependency * d) {
    SASSERT(proofs_enabled() == (pr != 0 && !m().is_undef_proof(pr)));
    if (m_inconsistent)
        return;
    if (proofs_enabled()) {
        expr_ref out_f(m());
        proof_ref out_pr(m());
        slow_process(true, f, pr, d, out_f, out_pr);
        if (!m_inconsistent) {
            if (m().is_false(out_f)) {
                push_back(out_f, out_pr, d);
            }
            else {
                m().set(m_forms, i, out_f);
                m().set(m_proofs, i, out_pr);
                if (unsat_core_enabled()) 
                    m().set(m_dependencies, i, d);
            }
        }
    }
    else {
        quick_process(true, f, d);
        if (!m_inconsistent) {
            if (m().is_false(f)) {
                push_back(f, 0, d);
            }
            else {
                m().set(m_forms, i, f);
                if (unsat_core_enabled()) 
                    m().set(m_dependencies, i, d);
            }
        }
    }
}
/**********************main()***********************/
void main()
{
	fp_err=fopen("纯捷联err.txt","w");
	//fp_V=fopen("V.txt","w");
	//fp_tV=fopen("tV.txt","w");
	
    //初始化导航参数
	initial(); //初始化理论值和实际值
	ctCn2b();  //姿态角计算姿态矩阵(理论)
	ini_Cn2b();//姿态角计算姿态矩阵(实际)
	ini_q();   //四元数初始化(实际值)

	/*Mk0=gyro_ran;
	Nk0=acce_ran;*/

	for(number=0;number<Num;number++)
	{				
	    noise=white();
		
        /*Mk=-number*sampletime/1800*Mk0;
		Nk=-number*sampletime/1800*Nk0;
		printf("%le\t %le\t\n",Mk,Nk);*/   

	    D_gyro[0]=(gyro_ran*noise+gyro_con0)*dh_hs;//+Mk         
       	D_gyro[1]=(gyro_ran*noise+gyro_con1)*dh_hs;//+Mk
	    D_gyro[2]=(gyro_ran*noise+gyro_con2)*dh_hs;//+Mk
		
        D_acce[0]=(acce_ran*noise+acce_con0)*g/1000.0;//+Nk
		D_acce[1]=(acce_ran*noise+acce_con1)*g/1000.0;//+Nk+Nk
		D_acce[2]=(acce_ran*noise+acce_con2)*g/1000.0;//         

		t_renew();//导航参数理论值更新函数
		ctCn2b(); //由理论值姿态角解算姿态矩阵的函数

		out_Wib_b();//导入陀螺数据
		cWnb_b();//真实值计算
		q_renew();//真实值计算
		cCn2b();//真实值,从四元数中计算出来


		out_f(); //导入加速度计数据
		renew();//理论值
	
		if((number%Tfnum==0)&&(number!=0)) // 1s 
		{ 		
	        fprintf(fp_err,"%e\t %e\t %e\t %e\t %e\t %e\t %e\t\n",(P-tP)*H_d*60,(R-tR)*H_d*60,(H-tH)*H_d*60,
			                         V[0]-tV[0],V[1]-tV[1],(latit-tlatit)*Rn,(longi-tlongi)*Re*cos(tlatit));
				                  
		}
	}

    fclose(fp_err);
	// fclose(fp_V);
	// fclose(fp_tV);
}
Esempio n. 4
0
void assertion_stack::update(unsigned i, expr * f, proof * pr, expr_dependency * d) {
    SASSERT(i >= m_form_qhead);
    SASSERT(proofs_enabled() == (pr != 0 && !m().is_undef_proof(pr)));
    if (m_inconsistent)
        return;
    if (proofs_enabled()) {
        expr_ref out_f(m());
        proof_ref out_pr(m());
        slow_process(true, f, pr, d, out_f, out_pr);
        if (!m_inconsistent) {
            if (m().is_false(out_f)) {
                push_back(out_f, out_pr, d);
            }
            else {
                m().inc_ref(out_f);
                m().dec_ref(m_forms[i]);
                m_forms[i] = out_f;

                m().inc_ref(out_pr);
                m().dec_ref(m_proofs[i]);
                m_proofs[i] = out_pr;

                if (unsat_core_enabled()) {
                    m().inc_ref(d);
                    m().dec_ref(m_deps[i]);
                    m_deps[i] = d;
                }
            }
        }
    }
    else {
        quick_process(true, f, d);
        if (!m_inconsistent) {
            if (m().is_false(f)) {
                push_back(f, 0, d);
            }
            else {
                m().inc_ref(f);
                m().dec_ref(m_forms[i]);
                m_forms[i] = f;

                if (unsat_core_enabled()) {
                    m().inc_ref(d);
                    m().dec_ref(m_deps[i]);
                    m_deps[i] = d;
                }
            }
        }
    }
}
Esempio n. 5
0
//<stat>           ->      <in> | <out> | <block> | <if> | <loop> | <assign>
node_t* stat_f() {
    node_t *p = getNode("<stat>");

    if (tk.tokenId == SCAN_tk) { // <in>
        p->child1 = getNode("SCAN");
        tk = scanner(fp, lineNum);
        p->child2 = in_f();
        return p;
    } else if (tk.tokenId == PRINT_tk) { // <out>
        p->child1 = getNode("PRINT");
        tk = scanner(fp, lineNum);
        p->child2 = out_f();
        return p;
    } else if (tk.name == "{") { // <block>
        //don't need to put delimiters in the tree
        p->child1 = block_f();
        return p;
    } else if (tk.tokenId == IF_tk) { // <if>
        p->child1 = getNode("IF");
        tk = scanner(fp, lineNum);
        p->child2 = if_f();
        return p;
    } else if (tk.tokenId == LOOP_tk) { // <loop>
        p->child1 = getNode("LOOP");
        tk = scanner(fp, lineNum);
        p->child2 = loop_f();
        return p;
    } else if (tk.tokenId == IDENT_tk) { // <assign>
        p->child1 = assign_f();
        return p;
    } else {
        error("Got token " + tk.name + ", expected SCAN, PRINT, {, IF, LOOP, or IDENTIFIER token\n");
    }

    return p;
}
Esempio n. 6
0
void VOMSUtilTest::VOMSTrustListTest() {

  std::vector<Arc::VOMSACInfo> output;
  std::string emptystring = "";
  Arc::VOMSTrustList emptylist;

  //  CPPUNIT_ASSERT_EQUAL(!parseVOMSAC(c, emptystring, emptystring, emptylist, output, false),false);

  // Create the AC on the VOMS side

  std::string CAcert("ca_cert.pem");
  std::string user_key_file("user_key.pem");
  std::string user_cert_file("user_cert.pem");
  Arc::Credential issuer_cred(user_cert_file, user_key_file, "", CAcert, "userpassword");

  std::string vomsserver_key_file("host_key.pem");
  std::string vomsserver_cert_file("host_cert.pem");
  Arc::Credential ac_issuer_cred(vomsserver_cert_file, vomsserver_key_file, "", CAcert, "");

  std::string holder_proxy_file("user_proxy.pem");
  Arc::Credential holder_cred(holder_proxy_file, "", "", CAcert);

  std::vector<std::string> fqan;
  fqan.push_back("/nordugrid.org");

  std::vector<std::string> targets;
  targets.push_back("www.nordugrid.org");
 
  std::vector<std::string> attrs;
  attrs.push_back("::role=admin");
  attrs.push_back("::role=guest");

  std::string voname = "nordugrid";
  std::string uri = "voms.nordugrid.org:50000";

  std::string ac_str;
  Arc::createVOMSAC(ac_str, ac_issuer_cred, holder_cred, fqan, targets, attrs, voname, uri, 3600*12);
 
 
  //
  // Create the full AC which is an ordered list of AC 
  //

  // encode the AC string into base64
  int size;
  char* enc = NULL;
  std::string ac_str_b64;
  enc = Arc::VOMSEncode((char*)(ac_str.c_str()), ac_str.length(), &size);
  if (enc != NULL) {
    ac_str_b64.append(enc, size);
    free(enc);
    enc = NULL;
  }
  std::string aclist_str;
  aclist_str.append(VOMS_AC_HEADER).append("\n");
  aclist_str.append(ac_str_b64).append("\n");
  aclist_str.append(VOMS_AC_TRAILER).append("\n");

  std::string voms_proxy_file("voms_proxy.pem");

  // Request
  int keybits = 1024;
  int proxydepth = 10;
  Arc::Time t;
  Arc::Credential proxy_req(t, Arc::Period(12*3600), keybits, "gsi2", "limited", "", proxydepth);
  std::string proxy_req_file("voms_req.pem");
  proxy_req.GenerateRequest(proxy_req_file.c_str());

  //Add AC extension to proxy certificat before signing it
  proxy_req.AddExtension("acseq", (char**) (aclist_str.c_str()));

  //Sign the voms proxy
  issuer_cred.SignRequest(&proxy_req, voms_proxy_file.c_str());

  std::string private_key, signing_cert, signing_cert_chain;
  proxy_req.OutputPrivatekey(private_key);
  issuer_cred.OutputCertificate(signing_cert);
  issuer_cred.OutputCertificateChain(signing_cert_chain);

  std::ofstream out_f(voms_proxy_file.c_str(), std::ofstream::app);
  out_f.write(private_key.c_str(), private_key.size());
  out_f.write(signing_cert.c_str(), signing_cert.size());
  out_f.write(signing_cert_chain.c_str(), signing_cert_chain.size());
  out_f.close();


  std::vector<std::string> vomscert_trust_dn;
  vomscert_trust_dn.push_back("/O=Grid/OU=ARC/CN=localhost");
  vomscert_trust_dn.push_back("/O=Grid/OU=ARC/CN=CA");
  vomscert_trust_dn.push_back("NEXT CHAIN");
  vomscert_trust_dn.push_back("^/O=Grid/OU=ARC");

  // Read and pars VOMS proxy

  Arc::Credential voms_proxy(voms_proxy_file, "", ".", CAcert);

  std::vector<Arc::VOMSACInfo> attributes;
  Arc::VOMSTrustList trust_dn(vomscert_trust_dn);
  Arc::parseVOMSAC(voms_proxy, ".", CAcert, "", trust_dn, attributes, true); 
  
  for(size_t n=0; n<attributes.size(); n++) {
    for(size_t i=0; i<attributes[n].attributes.size(); i++) {
      Arc::CredentialLogger.msg(Arc::DEBUG, "Line %d.%d of the attributes returned: %s",n,i,attributes[n].attributes[i]);
    }
  }

  CPPUNIT_ASSERT_EQUAL(1,(int)attributes.size());
  CPPUNIT_ASSERT_EQUAL(4,(int)attributes[0].attributes.size());

}
Esempio n. 7
0
void goal::slow_process(expr * f, proof * pr, expr_dependency * d) {
    expr_ref out_f(m());
    proof_ref out_pr(m());
    slow_process(false, f, pr, d, out_f, out_pr);
}
Esempio n. 8
0
void assertion_stack::slow_process(expr * f, proof * pr, expr_dependency * d) {
    expr_ref out_f(m());
    proof_ref out_pr(m());
    slow_process(false, f, pr, d, out_f, out_pr);
}
Esempio n. 9
0
void assertion_set::slow_process(expr * f, proof * pr) {
    expr_ref out_f(m());
    proof_ref out_pr(m());
    slow_process(false, f, pr, out_f, out_pr);
}