code: def ignore_alignment(data):
      # log_potentials = torch.ones(2, 2, 2, 3)
      # v = Alignment(StdSemiring).sum(log_potentials)
      # print("FINAL", v)
      # log_potentials = torch.ones(2, 3, 2, 3)
      # v = Alignment(StdSemiring).sum(log_potentials)
      # print("FINAL", v)
  
      # log_potentials = torch.ones(2, 6, 2, 3)
      # v = Alignment(StdSemiring).sum(log_potentials)
      # print("FINAL", v)
  
      # log_potentials = torch.ones(2, 7, 2, 3)
      # v = Alignment(StdSemiring).sum(log_potentials)
      # print("FINAL", v)
  
      # log_potentials = torch.ones(2, 8, 2, 3)
      # v = Alignment(StdSemiring).sum(log_potentials)
      # print("FINAL", v)
      # assert False
  
      # model = data.draw(sampled_from([Alignment]))
      # semiring = data.draw(sampled_from([StdSemiring]))
      # struct = model(semiring)
      # vals, (batch, N) = model._rand()
      # print(batch, N)
      # struct = model(semiring)
      # # , max_gap=max(3, abs(vals.shape[1] - vals.shape[2]) + 1))
      # vals.fill_(1)
      # alpha = struct.sum(vals)
  
      model = data.draw(sampled_from([Alignment]))
      semiring = data.draw(sampled_from([StdSemiring]))
      test = test_lookup[model](semiring)
      struct = model(semiring, sparse_rounds=10)
      vals, (batch, N) = test._rand()
      alpha = struct.sum(vals)
      count = test.enumerate(vals)[0]
      assert torch.isclose(count, alpha).all()
  
      model = data.draw(sampled_from([Alignment]))
      semiring = data.draw(sampled_from([LogSemiring]))
      struct = model(semiring, sparse_rounds=10)
      vals, (batch, N) = model._rand()
      alpha = struct.sum(vals)
      count = test_lookup[model](semiring).enumerate(vals)[0]
      assert torch.isclose(count, alpha).all()
  
      # model = data.draw(sampled_from([Alignment]))
      # semiring = data.draw(sampled_from([MaxSemiring]))
      # struct = model(semiring)
      # log_potentials = torch.ones(2, 2, 2, 3)
      # v = Alignment(StdSemiring).sum(log_potentials)
  
      log_potentials = torch.ones(2, 2, 8, 3)
      v = Alignment(MaxSemiring).sum(log_potentials)
      # print(v)
      # assert False
      m = Alignment(MaxSemiring).marginals(log_potentials)
      score = Alignment(MaxSemiring).score(log_potentials, m)
      assert torch.isclose(v, score).all()
  
      semiring = data.draw(sampled_from([MaxSemiring]))
      struct = model(semiring, local=True)
      test = test_lookup[model](semiring)
      vals, (batch, N) = test._rand()
      vals[..., 0] = -2 * vals[..., 0].abs()
      vals[..., 1] = vals[..., 1].abs()
      vals[..., 2] = -2 * vals[..., 2].abs()
      alpha = struct.sum(vals)
      count = test.enumerate(vals)[0]
      mx = struct.marginals(vals)
      print(alpha, count)
      print(mx[0].nonzero())
      # assert torch.isclose(count, alpha).all()
      struct = model(semiring, max_gap=1)
      alpha = struct.sum(vals)
  
imports: from torch_struct import CKY, CKY_CRF, DepTree, LinearChain, SemiMarkov, Alignment, deptree_nonproj, deptree_part
  from torch_struct import LogSemiring, CheckpointSemiring, CheckpointShardSemiring, KMaxSemiring, SparseMaxSemiring, MaxSemiring, StdSemiring, EntropySemiring
  from .extensions import LinearChainTest, SemiMarkovTest, DepTreeTest, CKYTest, CKY_CRFTest, test_lookup
  import torch
  from hypothesis import given
  from hypothesis.strategies import integers, data, sampled_from
  import pytest
  from hypothesis import settings
label_desc: Use image node_id 18 for calling a global function with example usage: ignore_alignment(data) without return types